package cn.lingyangwl.agile.auth.model.entity;

import cn.lingyangwl.agile.model.BasePO;
import cn.lingyangwl.agile.model.constants.UserCons;
import cn.lingyangwl.agile.tenant.core.DataIsolation;
import cn.lingyangwl.framework.mybatis.mate.annotations.FieldUnique;
import cn.lingyangwl.framework.mybatis.mate.annotations.FieldUniqueConfig;
import cn.lingyangwl.framework.mybatis.mate.enums.SqlConditionTypeEnum;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.*;

/**
 * 第三方用户体系授权
 *
 * @author shenguangyang
 */
@Data
@Builder
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
@TableName("auth_third_user")
@FieldUniqueConfig(tableId = "auth_id", entityId = "authId", sqlCondition = SqlConditionTypeEnum.AND)
@DataIsolation(filterTenant = true, tableName = "user_third_auth")
public class ThirdUser extends BasePO {
    @TableId
	private Long authId;
	
	/**
	 * 关联的用户id
	 */
	private Long userId;
	
	/**
	 * 第三方用户唯一标识
	 */
	@FieldUnique(message = "第三方标识已存在")
	private String openId;
	
	/**
	 * 第三方平台标识(qq-1、wechat-2)
	 */
	@FieldUnique(message = "第三方标识已存在")
	private String source;
	
	/**
	 * 第三方获取的access_token,校验使用
	 */
	private String accessToken;

	/**
	 * 应用类型
	 * @see cn.lingyangwl.agile.model.constants.AppType
	 */
	private String appType;


    public static LambdaQueryWrapper<ThirdUser> lqw() {
		return Wrappers.lambdaQuery();
	}
}
